package cn.b.sky.mes.cm.service;

import java.util.List;

import cn.b.sky.mes.cm.model.WorkCenter;
import cn.b.sky.mes.cm.model.WorkCenterType;
import cn.b.sky.mes.cm.model.WorkUnit;
import cn.b.sky.mes.cm.model.condition.WorkCenterCondition;
import cn.b.sky.common.model.TreeInterface;

public interface WorkCenterService {

  /**
   * 
   * <strong>Title : getWorkCenterTree<br>
   * </strong> <strong>Description : </strong>获取工作中心树<br>
   * <strong>Create on : 2015-9-24 下午3:03:11<br>
   * </strong>
   * <p>
   * 
   * @return List<WorkCenter>
   * @throws
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<TreeInterface> getWorkCenterTree(String siteCode);

  /**
   * 
   * <strong>Title : getWorkCenterTree<br>
   * </strong> <strong>Description : </strong>获取工作中心列表<br>
   * <strong>Create on : 2015-9-24 下午3:03:11<br>
   * </strong>
   * <p>
   * 
   * @return List<WorkCenter>
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkCenter> getWorkCenterListByCondition(WorkCenterCondition condition);

  /**
   * 
   * <strong>Title : getAllWorkCenterListBySiteCode<br>
   * </strong> <strong>Description : </strong>获取全工作中心<br>
   * <strong>Create on : 2015-10-12 下午7:40:43<br>
   * </strong>
   * <p>
   * 
   * @param siteCode
   * @param lockFlag
   * @return List<WorkCenter>
   * @throws
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkCenter> getAllWorkCenterListBySiteCode(String siteCode, Integer lockFlag);

  /**
   * 
   * <strong>Title : getWorkCenterListByCondition<br>
   * </strong> <strong>Description : </strong>有条件的获取工作中心<br>
   * <strong>Create on : 2015-9-24 下午3:25:40<br>
   * </strong>
   * <p>
   * 
   * @return List<WorkCenter>
   * @throws
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkCenter> getWorkCenterListByCondition(WorkCenter workCenter);

  /**
   * 
   * <strong>Title : getWorkCenterByPK<br>
   * </strong> <strong>Description : </strong>通过主键查询<br>
   * <strong>Create on : 2015-9-24 下午8:20:00<br>
   * </strong>
   * <p>
   * 
   * @param siteCode
   * @param workCenterCode
   * @return WorkCenter
   * @throws
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  public WorkCenter getWorkCenterByPK(String siteCode, String workCenterCode);

  /**
   * 
   * <strong>Title : saveWorkCenter<br>
   * </strong> <strong>Description : </strong>保存<br>
   * <strong>Create on : 2015-9-24 下午3:26:09<br>
   * </strong>
   * <p>
   * 
   * @param workCenter
   *            void
   * @throws
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void saveWorkCenter(WorkCenter workCenter);

  /**
   * 
   * <strong>Title : modifyWorkCenter<br>
   * </strong> <strong>Description : </strong>修改<br>
   * <strong>Create on : 2015-9-24 下午3:26:40<br>
   * </strong>
   * <p>
   * 
   * @param workCenter
   *            void
   * @throws
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void modifyWorkCenter(WorkCenter workCenter);

  /**
   * 
   * <strong>Title : deleteWorkCenter<br>
   * </strong> <strong>Description : </strong>删除<br>
   * <strong>Create on : 2015-9-24 下午3:26:57<br>
   * </strong>
   * <p>
   * 
   * @param workCenter
   *            void
   * @throws
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void deleteWorkCenter(WorkCenter workCenter);

  /**
   * 
   * <strong>Title : getSameLevelTypeByWorkCenter<br>
   * </strong> <strong>Description : </strong>获取工作中心类型<br>
   * <strong>Create on : 2015-9-25 上午9:58:40<br>
   * </strong>
   * <p>
   * 
   * @param siteCode
   * @param parentWorkCenterCode
   * @return List<WorkCenterType>
   * @throws
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkCenterType> getSameLevelTypeByWorkCenter(String siteCode, String parentWorkCenterCode);

  /**
   * 
   * <strong>Title : getAllWorkCenterListByProcessCode<br>
   * </strong> <strong>Description : </strong>查询工艺下面的工作中心<br>
   * <strong>Create on : 2015-10-12 下午7:49:30<br>
   * </strong>
   * <p>
   * 
   * @param processCode
   * @param processrev
   * @param siteCode
   * @return List<WorkCenter>
   * @throws
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkCenter> getAllWorkCenterListByProcessCode(String processCode, String siteCode, String processrev);

  /**
   * 
   * <strong>Title : selectWorkUnitByWorkCenter<br>
   * </strong> <strong>Description : </strong>获得工作中心下所有未锁定工作单元<br>
   * <strong>Create on : 2015-10-8 下午01:59:52<br>
   * </strong>
   * <p>
   * 
   * @param siteCode
   * @param workCenterCode
   * @return List<WorkUnit>
   * @throws
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkUnit> selectWorkUnitByWorkCenter(String siteCode, String workCenterCode);

  public List<WorkCenter> getWorkCenterList(WorkCenter workCenter);

  /**
   * <strong>Title : getWorkCenterSuggest<br>
   * </strong> <strong>Description : </strong>工作中心建议<br>
   * <strong>Create on : 2016年2月1日 下午3:25:30<br>
   * </strong>
   * <p>
   * 
   * @param condition
   * @return List<WorkCenter>
   * @throws
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   *          <strong>修改历史:</strong><br>
   *          修改人 | 修改日期 | 修改描述<br>
   *          -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkCenter> getWorkCenterSuggest(WorkCenterCondition condition);

  /**
   * 
   * <strong>Title : getWorkCenterLookUp<br></strong>
   * <strong>Description : </strong>根据Hr 权限查询工作中心列表<br> 
   * <strong>Create on : 2016-4-6 下午1:23:02<br></strong>
   * <p>
   * @param workCenter
   * @return
   * List<WorkCenter>
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkCenter> getWorkCenterLookUp(WorkCenterCondition condition);

  /**
   * 
   * <strong>Title : getWorkCenterLookUpCount<br></strong>
   * <strong>Description : </strong>查询 有hr权限 的工作中心数量<br> 
   * <strong>Create on : 2016-4-7 上午9:18:41<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getWorkCenterLookUpCount(WorkCenterCondition condition);

  /**
   * 
   * <strong>Title : getWorkCenterByPK<br></strong>
   * <strong>Description : </strong>根据主键 查询有权限的工作中心<br> 
   * <strong>Create on : 2016-4-25 下午6:48:56<br></strong>
   * <p>
   * @param siteCode
   * @param workCenterCode
   * @param userCode
   * @return
   * WorkCenter
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人	|	修改日期	|	修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  WorkCenter getWorkCenterByPKandPermission(String siteCode, String workCenterCode, String userCode);
}
